Some modern computer programs are adapted to execute on a heterogeneous computing system (HCS) that includes a host processor and one or more other devices. These computer programs typically include a host portion and one or more kernels. The host portion is compiled into executable program code that executes on the host processor. The kernels are compiled for implementation and/or execution by the other devices of the HCS.
In some cases, the kernels are compiled into executable program code. The executable versions of the kernels are executed by the devices of the HCS other than the host processor. For example, kernels may be compiled for execution by devices such as graphics processing unit(s) (GPUs) and/or digital signal processor(s) (DSPs). In other cases, the kernels are hardware accelerated by compiling the kernels into circuitry (e.g., a circuit design) that is implemented within an IC. As an illustrative example, a circuit design may be generated from the kernel and loaded into a programmable IC and/or implemented in an application specific IC thereby implementing the kernel in circuitry or hardware. The hardware implementation of the kernel is functionally equivalent to the executable version of the kernel.